class Solution1 {
public:
    void rotate(vector<int>& nums, int k) {
        
        int n=nums.size();
        k=k%n;
        vector<int> tmp(n);
        for(int i=0;i<n;i++)
        {
            tmp[i]=nums[i];
        }
        for(int i=0;i<n;i++)
        {
            nums[i]=tmp[(i+n-k)%n];
        }

    }
};

//原地翻转，空间复杂度为O（1）
class Solution2 {
public:
    void rotate(vector<int>& nums, int k) {
        int n=nums.size();
        k=k%n;
        int index=n-k;
        int l=0,r=index-1;
        while(l<r)
        {
            swap(nums[l++],nums[r--]);
        }
        l=index;
        r=n-1;
        while(l<r)
        {
            swap(nums[l++],nums[r--]);
        }

        l=0;
        r=n-1;
        while(l<r)
        {
            swap(nums[l++],nums[r--]);
        }

    }
};